﻿using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Text.Json.Serialization;
namespace BPM.Web.Shared.Data;

public partial class UpdateMenuInput : BaseVM
{
    /// <summary>
    /// 主键Id
    /// </summary>
    [DisplayName("业务号")]
    [Required(ErrorMessage = "业务号不能为空")]
    [JsonPropertyName("id")]
    public long Id { get; set; }

    /// <summary>
    /// 父Id
    /// </summary>
    [DisplayName("父Id")]
    [JsonPropertyName("pid")]
    [Required(ErrorMessage = "父级菜单Id不能为空")]
    public long Pid { get; set; }

    /// <summary>
    /// 菜单类型（字典 0目录 1菜单 2按钮）
    /// </summary>
    [DisplayName("菜单类型")]
    [JsonPropertyName("type")]
    [Required(ErrorMessage = "菜单类型不能为空")]
    public MenuType Type { get; set; }

    /// <summary>
    /// 名称
    /// </summary>
    [DisplayName("名称")]
    [JsonPropertyName("name")]
    public string? Name { get; set; }

    /// <summary>
    /// 编码
    /// </summary>
    [DisplayName("编码")]
    [JsonPropertyName("code")]
    public string? Code { get; set; }

    /// <summary>
    /// 图标
    /// </summary>
    [DisplayName("图标")]
    [JsonPropertyName("icon")]
    public string? Icon { get; set; }

    /// <summary>
    /// 路由地址
    /// </summary>
    [DisplayName("路由地址")]
    [JsonPropertyName("router")]
    public string? Router { get; set; }

    /// <summary>
    /// 组件地址
    /// </summary>
    [DisplayName("组件地址")]
    [JsonPropertyName("component")]
    public string? Component { get; set; }

    /// <summary>
    /// 权限标识
    /// </summary>
    [DisplayName("权限标识")]
    [JsonPropertyName("permission")]
    public string? Permission { get; set; }

    /// <summary>
    /// 应用分类（应用编码）
    /// </summary>
    [DisplayName("应用分类（应用编码）")]
    [JsonPropertyName("application")]
    public string? Application { get; set; }

    [JsonPropertyName("openType")]
    public MenuOpenType OpenType { get; set; }

    /// <summary>
    /// 是否可见（Y-是，N-否）
    /// </summary>
    [DisplayName("是否可见（Y-是，N-否）")]
    [JsonPropertyName("visible")]
    public string? Visible { get; set; }

    /// <summary>
    /// 内链地址
    /// </summary>
    [DisplayName("内链地址")]
    [JsonPropertyName("link")]
    public string? Link { get; set; }

    /// <summary>
    /// 重定向地址
    /// </summary>
    [DisplayName("重定向地址")]
    [JsonPropertyName("redirect")]
    public string? Redirect { get; set; }

    [JsonPropertyName("weight")]
    public MenuWeight Weight { get; set; }

    /// <summary>
    /// 排序
    /// </summary>
    [DisplayName("排序")]
    [JsonPropertyName("sort")]
    public int Sort { get; set; }

    /// <summary>
    /// 备注
    /// </summary>
    [DisplayName("备注")]
    [JsonPropertyName("remark")]
    public string? Remark { get; set; }

}
